// apply() 方法调用一个函数。简单理解为调用函数的方式，但是它可以改变函数的 this 指向。

//语法 fun.apply(thisArg, [argsArray])

/* 
thisArg：在fun函数运行时指定的 this 值
argsArray：传递的值，必须包含在数组里面(伪数组)
返回值就是函数的返回值，因为它就是调用函数
因此 apply 主要跟数组有关系，比如使用 Math.max() 求数组的最大值
 */

let o = {
  name: 'red'
}

function fn(arr) {
  console.log(this);
  console.log(arr);
}
fn('green');
fn.apply(o, ['blue']); //blue


//apply + Math.max()求最值
let arr = [-10, 2, 12, 3, 1];
let max = Math.max.apply(Math, arr); //不改变this指向只用arr

console.log(max); // 12